package com.paltform.qiniu.service;

import com.platform.base.common.dto.Result;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

public interface IQiniuService {
    /**
     * 文件上传凭证
     *
     * @return
     */
    String getUploadToken();

    /**
     * 获取文件覆盖上传凭证
     * @param fileKey
     * @return
     */
    String getUploadToken(String fileKey);

    /**
     * 上传文件
     * @param file
     * @return
     */
    Result upLoadFile(MultipartFile file) throws IOException;

    /**
     * 字节数组上传
     * @param
     * @return
     */
    Result upLoadFileByInputStream(InputStream instreams);

    /**
     * 上传图片
     * @param instreams
     * @return
     */
    Result upLoadImageByInputStream(InputStream instreams);

    /**
     * 获取文件信息
     * @param key
     * @return
     */
    Result getFileInfoByKey(String key);

    /**
     * 删除文件
     * @param key
     * @return
     */
    Result deleteFileByKey(String key);

    /**
     * 设置文件N天过期
     * @param key
     * @return
     */
    Result setFileExpireTime(String key, int days);

    /**
     * 获取文件列表信息
     * @param prefix 文件名前缀
     * @param delimiter 指定目录分隔符，列出所有公共前缀（模拟列出目录效果）。缺省值为空字符串
     * @return
     */
    Result getFileListInfo(String prefix, String delimiter);

    /**
     * 批量删除文件
     * @param keyList 单次批量请求的文件数量不得超过1000
     * @return
     */
    Result deleteBatchFile(String[] keyList);
}
